package com.liuyucheng.swing;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

public class ColorChangeSwing extends JFrame {
    // 随机数生成器
    private Random random = new Random();

    JPanel panel = new JPanel();

    public ColorChangeSwing() {
        // 创建一个按钮
        JButton changeColorButton = new JButton("Change Color");
        // 设置按钮的动作监听器
        changeColorButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Change Color");
                // 调用方法修改背景颜色
                changeBackgroundColor();
            }
        });

        // 创建一个面板，并将按钮添加到面板中
        panel = new JPanel();
        panel.add(changeColorButton);
        // 将面板添加到窗口内容面板中
        getContentPane().add(panel);

        // 设置窗口属性
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 200);
        setVisible(true);
    }

    // 随机修改背景颜色的方法
    private void changeBackgroundColor() {
        // 生成随机颜色
        Color randomColor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
        // 设置窗口背景颜色
        getContentPane().setBackground(randomColor);
        panel.setBackground(randomColor);
        // 重新绘制窗口
        getContentPane().repaint();
    }

    public static void main(String[] args) {
        // 在事件派发线程中创建和显示GUI
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new ColorChangeSwing();
            }
        });
    }
}